package com.group01.community.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.group01.community.entity.SysRole;
import com.group01.community.entity.SysUser;
import com.group01.community.entity.vo.SysUserInfoVo;
import com.group01.community.entity.vo.SysUserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

/**
 * <p>
 * 用户信息表 Mapper 接口
 * </p>
 *
 * @author guoyuan
 * @since 2025-05-01
 */

@Repository
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 批量插入
     *
     * @param sysUser
     */
    void insertBatch(SysUser sysUser);

    /**
     * 根据用户id查询角色
     * @param userId
     * @return
     */
    SysUser selectRoleByUserId(Long userId);

    /**
     * 根据用户名字查询角色
     * @param username
     * @return
     */
    SysUserVo selectUserRoleByUsername(String username);

    /**
     * 根据用户名查询用户个人信息（岗位+部门+角色）
     * @param username
     * @return
     */
    SysUserInfoVo getUserInfoByUserName(String username);

    /**
     * 修改用户信息
     * @param sysUser
     */
    void updateUserInfo(SysUser sysUser);

    /**
     * 根据部门id查询部门成员
     * @param deptId
     * @return
     */
    List<SysUser> getDeptUserByDeptId(Long deptId);

    /**
     * 分页查询
     * @param iPage
     * @return
     */
    IPage<SysUserInfoVo> selectUserPage(IPage<SysUserInfoVo> iPage ,SysUser user);
void updatePassword(String password);

    List<SysRole> queryRoleListByUserName(@Param("userName") String userName);
}
